package com.five.monkey.feign.es.service;

import com.five.monkey.vo.CardVo;
import com.five.monkey.vo.PageVo;

import java.util.List;

/**
 * @author 狻猊
 * @date 2022-03-29 14:41:12
 */
public interface CardElasticsearchService {

    /**
     * 创建索引
     * @author 狻猊
     * @return boolean
     * @date 2022/3/31 10:19 上午
     */
    boolean createIndex();

    /**
     * 根据content查询卡片信息，按照创建时间倒序分页
     * @author 狻猊
     * @param content 搜索关键词
     * @param pageNum 页码，从1开始
     * @param pageSize 页面大小
     * @return com.five.monkey.vo.PageVo<com.five.monkey.vo.CardVo>
     * @date 2022/3/29 3:53 下午
     */
    PageVo<CardVo> findByContent(String content, int pageNum, int pageSize);

    /**
     * 根据content查询卡片信息
     * @author 狻猊
     * @param content 搜索关键词
     * @return java.util.List<com.five.monkey.vo.CardVo>
     * @date 2022/3/29 3:53 下午
     */
    List<CardVo> findByContent(String content);

    /**
     * 保存（新增或修改）卡片信息
     * @author 狻猊
     * @param vo 卡片信息
     * @return com.five.monkey.vo.CardVo
     * @date 2022/3/29 3:58 下午
     */
    CardVo save(CardVo vo);

    /**
     * 批量保存（新增或修改）卡片信息
     * @author 狻猊
     * @param cardVoList 卡片信息集合
     * @return java.util.List<com.five.monkey.vo.CardVo>
     * @date 2022/3/31 4:33 下午
     */
    List<CardVo> batchSave(List<CardVo> cardVoList);

    /**
     * 根据id查询卡片信息
     * @author 狻猊
     * @param id 卡片id
     * @return com.five.monkey.vo.CardVo
     * @date 2022/3/30 12:05 下午
     */
    CardVo findById(Long id);

    /**
     * 根据status查询卡片信息
     * @author 狻猊
     * @param status 卡片状态
     * @return java.util.List<com.five.monkey.vo.CardVo>
     * @date 2022/3/30 12:05 下午
     */
    List<CardVo> findByStatus(int status);

    /**
     * 根据adminId查询卡片信息
     * @author 狻猊
     * @param adminId 卡片创建人id
     * @return java.util.List<com.five.monkey.vo.CardVo>
     * @date 2022/3/30 12:05 下午
     */
    List<CardVo> findByAdminId(Long adminId);

    /**
     * 根据title模糊查询卡片信息
     * @author 狻猊
     * @param title 卡片标题
     * @return java.util.List<com.five.monkey.vo.CardVo>
     * @date 2022/3/30 12:05 下午
     */
    List<CardVo> findByTitle(String title);

    /**
     * 根据title全等查询卡片信息
     * @author 狻猊
     * @param title 卡片标题
     * @return java.util.List<com.five.monkey.vo.CardVo>
     * @date 2022/3/30 12:05 下午
     */
    List<CardVo> findByTitleEquals(String title);
}
